package com.qihang.util;

import java.security.MessageDigest;

/**
 * 
 * 本类是MD5加密的工具类
 * 可以通过此类对字符串进行MD5加密
 * 使用方法如:MD5Encoder.encode(sourceString)
 *
 */
public class MD5Encoder {
    /**
     * 加密字符串
     * 
     * @param sourceString 源字符串
     * @return 加密后的字符串
     */
    public static String encode(String sourceString) {
        String resultString = null;
        try {
            resultString = new String(sourceString);
            MessageDigest md = MessageDigest.getInstance("MD5");
            // 进行加密
            byte[] b = md.digest(resultString.getBytes());
            resultString = byte2hexString(b);
        } catch (Exception ex) {
        }
        return resultString;
    }

    /**
     * 把字节数组转换成字符串.
     * 
     * @param bytes 字节
     * @return 字节数组转换成字符串
     */
    private static final String byte2hexString(byte[] bytes) {
        StringBuilder buf = new StringBuilder(bytes.length * 2);
        for (int i = 0; i < bytes.length; i++) {
            if (((int) bytes[i] & 0xff) < 0x10) {
                buf.append("0");
            }
            buf.append(Long.toString((int) bytes[i] & 0xff, 16));
        }
        return buf.toString();
    }
}
